var comboMarca = Ext.create('Ext.form.ComboBox', {
    fieldLabel:'Marca',
    name:'marca_id',
    valueField: 'id',
    displayField: 'nombre',
    store: Ext.create('Ext.data.JsonStore',{
        proxy: {
            type:'ajax',
            actionMethods:{read:'POST'},
            api:{read: BASE_URL+'marcas/llenarCombo'},
            reader:{type: 'json',root: 'data',totalProperty: 'total',idProperty: 'productos'}
        },
        fields: ['id','nombre'],
        autoLoad:true
    }),
    queryMode: 'local',
    allowBlank:false
});

var comboCategoria = Ext.create('Ext.form.ComboBox', {
    fieldLabel:'Categoría',
    name:'categoria_id',
    valueField: 'id',
    displayField: 'nombre',
    store: Ext.create('Ext.data.JsonStore',{
        proxy: {
            type:'ajax',
            actionMethods:{read:'POST'},
            api:{read: BASE_URL+'categorias/llenarCombo'},
            reader:{type: 'json',root: 'data',totalProperty: 'total',idProperty: 'productos'}
        },
        fields: ['id','nombre'],
        autoLoad:true
    }),
    queryMode: 'local',
    allowBlank:false
})

var comboGenero = Ext.create('Ext.form.ComboBox', {
    fieldLabel:'Género',
    name:'genero_id',
    valueField: 'id',
    displayField: 'nombre',
    store: Ext.create('Ext.data.JsonStore',{
        proxy: {
            type:'ajax',
            actionMethods:{read:'POST'},
            api:{read: BASE_URL+'generos/llenarCombo'},
            reader:{type: 'json',root: 'data',totalProperty: 'total',idProperty: 'productos'}
        },
        fields: ['id','nombre'],
        autoLoad:true
    }),
    queryMode: 'local',
    allowBlank:false
});

var textReferencia = Ext.create('Ext.form.field.Text', {
    fieldLabel: 'Referencia',name: 'referencia',allowBlank:false,vtype:'alphanum'
});

var textAreaDescripcion = Ext.create('Ext.form.field.TextArea', {
    fieldLabel: 'Descripción',name: 'descripcion',xtype: 'textareafield',grow: true,allowBlank:false,
    maxLength:75,maxLengthText: 'La descripción supera los 75 caracteres.'
});

var textColores = Ext.create('Ext.form.field.Text', {
    fieldLabel: 'Colores',name: 'colores', allowBlank:false
});

var textAreaObservaciones = Ext.create('Ext.form.field.TextArea', {
    fieldLabel: 'Observaciones',name: 'observaciones',xtype: 'textareafield',grow: true,
    maxLength:100,maxLengthText: 'Las observaciones supera los 100 caracteres.'
});

var form = Ext.create('Ext.form.Panel', {
    url:BASE_PRODUCTO+'save',
    bodyStyle:'padding:5px 5px 0',
    width: 450,
    fieldDefaults: {
        msgTarget: 'side',
        labelWidth: 100
    },
    defaultType: 'textfield',
    defaults: {
        anchor: '100%'
    },
    items: [
        comboMarca,comboCategoria,comboGenero,
        textReferencia,textAreaDescripcion,
        textColores,textAreaObservaciones
    ],
    buttons: [
        {
            text: 'Guardar',
            handler: function() {
                var form = this.up('form').getForm();
                form.submit({
                    clientValidation: true,
                    success: function(form, action) {
                        Ext.Msg.alert(
                            'Operación Exitosa',
                            action.result.msg,
                            function(){
                                Ext.getCmp('<?php echo $gridPanelId?>').getStore().load();
                            }
                        );
                        formProductos.close();
                        formProductos.destroy();
                    },
                    failure: function(form,action){
                        switch (action.failureType) {
                          case Ext.form.Action.CLIENT_INVALID:
                             Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');
                             break;
                          case Ext.form.Action.CONNECT_FAILURE:
                             Ext.Msg.alert('Failure', 'Ajax communication failed');
                             break;
                          case Ext.form.Action.SERVER_INVALID:
                            Ext.Msg.alert('Failure', action.result.msg);
                            break;
                          default:
                            Ext.Msg.alert('Failure',action.result.msg);
                        }
                    },
                    scope:this
                });
            }
        }
    ]
});

<?php
if(!empty($data)){
    echo "
        comboMarca.setValue($data->marca_id);
        comboCategoria.setValue($data->categoria_id);
        comboGenero.setValue($data->genero_id);
        textReferencia.setValue('$data->referencia');
        textAreaDescripcion.setValue('$data->descripcion');
        textColores.setValue('$data->colores');
        textAreaObservaciones.setValue('$data->observaciones');
        form.add(Ext.create('Ext.form.field.Hidden', {name: 'id',value:$data->id}));
        form.add(Ext.create('Ext.form.field.Hidden', {name: 'creado',value:'$data->creado'}));
    ";
}
?>

var formProductos = Ext.create('Ext.Window', {
    title: 'Nuevo Producto',
    layout: 'fit',
    modal: true,
    items:form
}).show();